package com.hnkywl.sts.util;

import com.hnkywl.sts.entity.cggl.Cgd;
import com.hnkywl.sts.entity.cggl.Cgdmx;
import com.hnkywl.sts.entity.cggl.Glfy;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: jerry
 * Date: 13-6-11
 * Time: 下午3:20
 * To change this template use File | Settings | File Templates.
 */
public class CalcUtils {
    /**
     * 计算库存成本
     *
     * @param cgdmx 采购单明细
     * @return 库存成本
     */
    public static Double calcKccb(Cgdmx cgdmx) {
        Cgd cgd = cgdmx.getCgd();
        return calcKccb(cgdmx, cgd);
    }

    /**
     * 计算库存成本
     *
     * @param cgdmx
     * @param cgd
     * @return
     */
    public static Double calcKccb(Cgdmx cgdmx, Cgd cgd) {
        if (cgd.getCgfyList() == null) {
            return cgdmx.getBhsj();
        }

        //计算关联费用
        Double sumFy = 0.0d;
        for (Glfy glfy : cgd.getCgfyList()) {
            sumFy += glfy.getJe();
        }

        //计算总数量
        Double sumSL = 0.0d;
        for (Cgdmx mx : cgd.getCgdmxList()) {
            if (mx.getRksl() != null)
                sumSL += mx.getRksl();
            else
                sumSL += mx.getSbsl();
        }

        if (sumSL != 0.0d)
            return round(cgdmx.getBhsj() + sumFy / sumSL, 4);
        else
            return 0.0000;
    }

    /**
     * 保留小数
     *
     * @param d
     * @param scale
     * @return
     */
    public static double round(Double d, int scale) {
        if (null == d) {
            return 0;
        } else {
            return new BigDecimal(d).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
        }

    }


    /**
     * 计算含比例值
     *
     * @param bhbl 不含比例值
     * @param bl   比例 百分比 例如：17%为17
     * @return 含比例值
     */
    public static Double clacHbl(Double bhbl, Double bl) {
        if (bhbl != null && bl != null) {
            String hbl = getDefaultDecimalFormat().format(bhbl * (1 + bl / 100));
            return Double.parseDouble(hbl);
        }
        return 0.0000d;
    }


    /**
     * 计算不含比例值
     *
     * @param hbl 含比例值
     * @param bl  比例
     * @return 不含比例值
     */
    public static Double clacBhbl(Double hbl, Double bl) {
        if (hbl != null && bl != null) {
            String bhbl = getDefaultDecimalFormat().format(hbl / (1 + bl / 100));
            return Double.parseDouble(bhbl);
        }
        return 0.0000d;
    }

    /**
     * 计算比例
     *
     * @param hbl  含比例值
     * @param bhbl 不含比例
     * @return 比例
     */
    public static Double clacBl(Double hbl, Double bhbl) {
        if (hbl != null && bhbl != null) {
            String bl = getDefaultDecimalFormat().format((hbl / bhbl - 1) * 100);
            return Double.parseDouble(bl);
        }
        return 0.0000d;
    }

    /**
     * 相乘
     *
     * @param value  参数1
     * @param value1 参赛
     * @return
     */
    public static Double mulDouble(Double value, Double value1) {
        if (value != null && value1 != null) {
            BigDecimal bdValue = new BigDecimal(value);
            BigDecimal bdvalue1 = new BigDecimal(value1);
            Double mul = bdValue.multiply(bdvalue1).doubleValue();
            String strMul = CalcUtils.getDefaultDecimalFormat().format(mul);
            return Double.valueOf(strMul);
        }
        return 0.0;
    }


    private static DecimalFormat getDefaultDecimalFormat() {
        return new DecimalFormat("#0.0000");
    }

    public static void main(String[] args) {
        System.out.println(CalcUtils.mulDouble(2334.2736363, 200.0));
    }
}
